module.exports = {
    get(ops={}){
        // 如何判断空对象
        // 获取对象多有的key，返回的是数组
        // Object.keys().length < 1
        const {colObj, where={}, sort={}, index, num} = ops;
        // 调用find方法发起查询数据功能，得到查询结果对象
        let queryObj = colObj.find(where, {_id:0,__v:0});
        // 根据是否有排序要求，决定是否排序
        if(!(index && num)){
            queryObj = queryObj;
        }else if(Object.keys(sort).length < 1){
            index = index || 0;
            num = num || 10;
            queryObj = queryObj.limit(num).skip(index*num);
        }else{
            index = index || 0;
            num = num || 10;
            queryObj = queryObj.sort(sort).limit(num).skip(index*num);
        }
        return new Promise((resolve,reject)=>{
            // 对处理之后的查询结果对象，执行回调函数，解析数据
            queryObj.exec((err, data)=>{
                if(err){
                    reject(err);
                }else{
                    resolve(data);
                }
            })
        })
    },
    add(colObj, data={}){
        return new Promise((resolve, reject)=>{
            colObj.insertMany(data, err=>{
                if(err){
                    reject(err);
                }else{
                    resolve();
                }
            })
        })
    },
    set(colObj, where, data, num=1){
        const type = num===1 ? "updateOne" : "updateMany";
        return new Promise((resolve, reject)=>{
            colObj[type](where, data, err=>{
                if(err){
                    reject(err);
                }else{
                    resolve();
                }
            })
        })
    },
    remove(colObj, where={}, num=0){
        const type = num===1 ? "deleteOne" : "deleteMany";
        return new Promise((resolve, reject)=>{
            colObj[type](where, err=>{
                if(err){
                    reject(err);
                }else{
                    resolve();
                }
            })
        })
    },
}